package com.wj.graph;

import com.wj.linear.Queue;

/**
 * @author wen.jie
 * @date 2021/8/27 10:43
 * 无向图
 */
public class Graph {

    //顶点数目
    final int V;
    //边的数目
    int E;
    //邻接表
    Queue<Integer>[] adj;

    //初始化
    public Graph(int v) {
        this.V = v;
        this.E = 0;
        this.adj = new Queue[v];
        for (int i = 0; i < adj.length; i++) {
            adj[i] = new Queue<>();
        }
    }
    //获取顶点数目
    public int V(){
        return V;
    }

    public int E(){
        return E;
    }

    //向图中添加一条边 v-w
    public void addEdge(int v, int w) {
        adj[v].enqueue(w);
        adj[w].enqueue(v);
        E++;
    }

    //获取和顶点v相邻的所有顶点
    public Queue<Integer> adj(int v) {
        return adj[v];
    }

}
